package ar.unsam.tp.test

import ar.unsam.tp.excepciones.NoSeJuegaException
import ar.unsam.tp.tipo.Estandar
import ar.unsam.tp.programa.Jugador
import ar.unsam.tp.programa.Partido
import ar.unsam.tp.tipo.Solidario
import junit.framework.Assert
import org.junit.Before
import org.junit.Test

class TestEquipoCompleto {
	var Jugador pepe = new Jugador("pepe")
	var Jugador jose = new Jugador("jose")
	var Jugador tito = new Jugador("tito")
	var Jugador carlos = new Jugador("carlos")
	var Jugador juan = new Jugador("juan")
	var Jugador alberto = new Jugador("alberto")
	var Jugador rodolfo = new Jugador("rodolfo")
	var Jugador perez = new Jugador("perez")
	var Jugador julian = new Jugador("julian")
	var Jugador alfredo = new Jugador("alfredo")
	var Jugador maxi = new Jugador("maxi")
	var Jugador cristian = new Jugador("cristian")
	var Jugador luis = new Jugador("luis")

	var Partido partido = new Partido()

	@Before
	def void init() {

		pepe.setTipoDeInscripcion(new Estandar())
		jose.setTipoDeInscripcion(new Estandar())
		tito.setTipoDeInscripcion(new Solidario())
		carlos.setTipoDeInscripcion(new Estandar())
		juan.setTipoDeInscripcion(new Estandar())
		alberto.setTipoDeInscripcion(new Solidario())
		rodolfo.setTipoDeInscripcion(new Solidario())
		perez.setTipoDeInscripcion(new Solidario())
		julian.setTipoDeInscripcion(new Estandar())
		alfredo.setTipoDeInscripcion(new Estandar())
		maxi.setTipoDeInscripcion(new Solidario())
		cristian.setTipoDeInscripcion(new Estandar())
		luis.setTipoDeInscripcion(new Estandar())
	}

	@Test
	def void testEquipoCompleto() {
		partido.alta(pepe)
		partido.alta(jose)
		partido.alta(tito)
		partido.alta(carlos)
		partido.alta(juan)
		partido.alta(alberto)
		partido.alta(rodolfo)
		partido.alta(perez)
		partido.alta(julian)
		partido.alta(alfredo)
		partido.alta(maxi)
		partido.alta(cristian)
		partido.alta(luis)
		Assert::assertEquals(partido.jugadoresQueJueganSeguro.size, 10)
	}

	@Test(expected=typeof(NoSeJuegaException))
	def void jugarPartido() {
		partido.alta(maxi)
		partido.seJuega
	}
}
